//	COPYRIGHT (C) 1980 BY BOARD OF TRUSTEES,
//	LELAND STANFORD JUNIOR UNIVERSITY

//APRIL 25, 1978
//BCPL-CONGEN, WRITTEN BY RAY CARHART.  THIS IS THE CONGEN EXECUTIVE,
//TINY FOR NOW, BUT IN THE WORDS OF SUFRIN, IT IS BUT A SHADOW OF ITS
//EVENTUAL SELF.  THIS JUST CALLS THE OTHER CONGEN MODULES (GENERA,
//PRUNE, IMBED AND DRAW), WITH NO PREPARATION OF SPECIAL INPUT EXCEPT
//FOR DRAW.  IN THAT CASE, A FILE CGPASS.DAT IS WRITTEN WITH THE
//APPROPRIATE INFORMATION TO GIVE THE DRAWINGS.  EACH OF THE MODULES
//RETURNS CONTROL TO THIS EXECUTIVE WHEN FINISHED.
GET "BCPLIB.GET[1,35]"
GET "MYLIB.GET[1,35]"
STATIC $( VECSPACE = VEC 3500 $);
GET "LINSTR.BCL[1,35]"
GET "LSTFNS.BCL[1,35]"
GET "SEGFNS.BCL[1,35]"
STATIC $( CTELIST = NIL; ANYBONDS = NIL; FIRSTFREE = 1; STRUCNAME = NIL;
          STRUCTYPE = NIL; IBLIST = NIL $);
GET "BASES0.BCL[1,35]"
GET "ESRW.BCL[1,35]"
STATIC $( CTABLE = NIL; CTSTART = NIL; CTSTOP = NIL; NUMISBS = NIL;
          ATTYPE = NIL $);
STATIC $( STACK = VEC 500; STACKPTR = 0 $);
MANIFEST $( R2WDSZ = 32; P2WDSZ = 5 $);

LET CONGEN() BE
 $( STATIC $( XSTRNUM = NIL; HSTRNUM = NIL $);
 GET "PASESO.BCL[1,35]"
 GET "CGFNS.BCL[1,35]"
 INITLISTS(NEWVEC(1000),1000);
 MAKESCAT(NEWVEC(200),200,NEWVEC(400),400);
 XSTRNUM:=NUMOFSTR("X");
 HSTRNUM:=NUMOFSTR("H");
 TEST FILEEXISTS(TOPFILENAME(),CGEXT) THEN RECINIT() OR CGINIT();
 CGREFRESH();
 WHILE DELETEFILE(SC1FILENAME(),CGEXT) DO;
 WHILE DELETEFILE(SC2FILENAME(),CGEXT) DO;
 WHILE DELETEFILE(SC3FILENAME(),CGEXT) DO;
 LP:
 SWITCHON PROMPTSELECT("#",0,[TABLE 2,
                       "GENERATE IMBED PRUNE DRAW DEFINE FIX SHOW FORGET",
                       "SEARCH SAVE RESTORE EXIT SURVEY STEREO AROMATIZE"],
                       "CONGEN-HELP",
                       [TABLE 15,"GENERATE",1,"IMBED",2,"PRUNE",3,"DRAW",4,
                       "DEFINE",5,"FIX",6,"SHOW",7,"FORGET",8,"SEARCH",9,"SAVE",
                       10,"RESTORE",11,"EXIT",12,"SURVEY",13,"STEREO",14,
                       "AROMATIZE",15,0],TRUE) INTO
  $(
  CASE 1: SASFORGEN(); ENDCASE;
  CASE 2: IMBED(); ENDCASE;
  CASE 3: PRUNE(); ENDCASE;
  CASE 4: CGDRAW(-TERMTYPE,FALSE); ENDCASE;
  CASE 5: CGDEFINE(FALSE); ENDCASE;
  CASE 6: CGDEFINE(TRUE); ENDCASE;
  CASE 7: CGSHOW(); ENDCASE;
  CASE 8: FORGET(); ENDCASE;
  CASE 9: SEARCH(); ENDCASE;
  CASE 10: SAVE(); ENDCASE;
  CASE 11: RESTORE(); ENDCASE;
  CASE 12: EXIT(FALSE); ENDCASE;
  CASE 13: SURVEY(); ENDCASE;
  CASE 14: CGDRAW(-TERMTYPE,TRUE); ENDCASE;
  CASE 15:
   UNLESS QRESPONSE("NO ARGUMENTS FOR AROMATIZE",0,"AROMATIZE-HELP") DO
    AROMATIZE();
   ENDCASE;
  $);
 GOTO LP
 $);

LET START() BE
 $(
 ![#124]:=TOPORSTOP;
 INITIALISEIO(VECSPACE,3500);
 OUTPUT:=TTY;
 INPUT:=TTY;
 CONGEN()
 $)
